<!-- 
    自定义操作模板-代练通
-->

<!-- 自定义操作模板 -->
<script type="text/html" id="DaiLianWanzi_templat-order-tool">
  <div class="layui-clear-space">
    <a class="layui-btn layui-btn-sm" lay-event="DaiLianWanzi_CancelOrder">取消订单</a>
  </div>
</script>



<script>

    window.DaiLianWanzi_Function_ZiDingYiCaoZuoMoBan = function (table, $) {
        // 添加表格事件监听
        table.on('tool(DaiLianWanzi_OrderTable)', function (obj) {
            var data = obj.data; // 获得当前行数据
            var layEvent = obj.event; // 获得 lay-event 对应的值

            if (layEvent === 'DaiLianWanzi_CancelOrder') {
                if(data.status != 2){
                    layer.msg("当前订单状态不能取消");
                    return;
                }
                console.log(data);
                // 确认框
                layer.confirm('确定取消订单吗？', function (index) {
                    // 取消订单逻辑
                    console.log("确定取消");

                    axios({
                        url: "/api/dailianwanzi/cancel_order/",
                        params: {
                            order_id: data.order_id
                        },
                        BS_ShowLoading: true
                    }).then(res => {
                        if (res.data.code === 0) {
                            layer.msg("取消订单成功");
                            
                            // 显示等待提示，服务器需要时间清理数据
                            var waitIndex = layer.msg('正在等待服务器更新数据，请稍候...', {icon: 16, time: false});
                            
                            // 等待2秒后再刷新数据，确保服务器已处理完成
                            setTimeout(function() {
                                // 获取当前筛选条件
                                var table_type = $('#DaiLianWanzi_StatusFilter').val();
                                
                                // 刷新数据，添加时间戳参数防止缓存问题
                                table.reload('DaiLianWanzi_OrderTable', {
                                    where: {
                                        table_type: table_type,
                                        _t: new Date().getTime() // 添加时间戳参数防止缓存
                                    },
                                    page: {curr: 1} // 重置到第一页，确保能看到最新状态
                                });
                                
                                // 关闭等待提示
                                layer.close(waitIndex);
                            }, 2000);
                        } else {
                            layer.msg("取消订单失败 " + res.data.message);
                        }
                    }).catch(err => {
                        layer.msg("取消订单失败 " + err, {icon: 2});
                    })
                    
                    layer.close(index);
                });
            }
        });
    }

</script>